package abd.pr1.Mappers;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;

import javax.sql.DataSource;

import abd.pr1.Models.ComentarioEpisodio;

public class ComentariosEpisodiosMapper extends AbstractMapper<ComentarioEpisodio, Integer> {

	private static final String[] COMENTARIOS_EPISODIOS_KEY_COLUMN_NAMES = new String[] { "id" };
	private static final String[] COMENTARIOS_EPISODIOS_COLUMN_NAMES = new String[] { "id", "id_usuario", "id_episodio", "texto", "fecha"};
	private static final String COMENTARIOS_EPISODIOS_TABLE_NAME = "comentarios_episodios";
	
	public ComentariosEpisodiosMapper(DataSource ds) {
		super(ds);
	}

	@Override
	protected String getTableName() {
		return COMENTARIOS_EPISODIOS_TABLE_NAME;
	}

	@Override
	protected String[] getColumnNames() {
		return COMENTARIOS_EPISODIOS_COLUMN_NAMES;
	}

	@Override
	protected Object[] serializeObject(ComentarioEpisodio object) {
		return new Object[] {object.getId(), object.getId_usuario(), object.getId_episodio(), object.getTexto(), object.getFecha()};
	}

	@Override
	protected String[] getKeyColumnNames() {
		return COMENTARIOS_EPISODIOS_KEY_COLUMN_NAMES;
	}

	@Override
	protected Object[] serializeKey(Integer key) {
		return new Object[] {key};
	}

	@Override
	protected ComentarioEpisodio buildObject(ResultSet rs) throws SQLException {
		Integer id = rs.getInt("id");
		Integer id_usuario = rs.getInt("id_usuario");
		Integer id_episodio = rs.getInt("id_episodio");
		String texto = rs.getString("texto");
		Date fecha = rs.getDate("fecha");
		
		return new ComentarioEpisodio(id, id_usuario, id_episodio, texto, fecha);
	}

	@Override
	protected Integer getKey(ComentarioEpisodio object) {
		return object.getId();
	}

	@Override
	protected boolean hasAutoincrementKey() {
		// TODO Auto-generated method stub
		return true;
	}

	@Override
	void updateKeys(ResultSet rs, ComentarioEpisodio object)
			throws SQLException {
		Integer id = rs.getInt(1);
		object.setId(id);	
		
	}
	
}
